Quality of service (QoS) is functionality, known and referred to herein as QoS policing, used in computer networking to guarantee a certain level of performance to a data flow based on a priority level associated with each of the individual data packets in a data flow. Priority level may be assigned based on a variety of factors, such as identification of originating applications, devices or users. For example, a required bit rate, delay, jitter, packet dropping probability and/or bit error rate may be guaranteed for identified high priority data packets in the data flow. QoS functions are used to ensure data delivery for high priority applications where the network capacity is likely to be overloaded. Examples include real-time streaming multimedia applications that require a fixed bit rate and are delay sensitive, such as voice over IP, online gaming and streaming video. QoS functions also are important for networks where the capacity is a limited resource, for example in cellular data communication networks.
In computer networking, the QoS function is typically implemented in a network router. In the router, a desired level of service is set for each traffic type on the network. For example, by allowing video streaming to have a higher QoS than Internet traffic, there will be much less interference when sending and/or receiving video data because the network will reserve a relatively large portion of the bandwidth specifically for the video application.
QoS functions have traditionally required knowledge of the Internet bandwidth that is available for use. If the bandwidth is not known or the actual bandwidth is different from the bandwidth used in the QoS function, the QoS function will not work properly. For example, when the bandwidth used in the QoS function is higher than the actual available bandwidth, the QoS function will not work for application with flow control, such as transmission control protocol (TCP). Conversely, when the bandwidth used in the QoS function is lower than the actual available bandwidth, the QoS function will actually prevent application from using all of the available bandwidth, resulting in unnecessarily reduced internet traffic.
The requirement for QoS functions to know the correct existing bandwidth can cause a number of issues for users. For example, users may disable QoS functionality because they do not know the bandwidth and cannot properly configure their router. Further, even if the theoretical bandwidth is known, the actual; bandwidth may change dynamically. For example, bandwidth received at a cable modem may be received through an internet connection that is shared by a group of subscribers in the same area, degrading the actual bandwidth available to the router.
Accordingly, in order to determine bandwidth, QoS functions generally include functionality to ascertain and continuously monitor the actual bandwidth. However, bandwidth monitoring functionality has its own drawbacks. For example, bandwidth detection functions need to saturate the bandwidth in order to calculate an accurate maximum. This saturation necessarily interferes with normal application traffic during the detection operation. If the detection is performed frequently, the interference causes problems for users. If the detection is not performed frequently enough, there is an increased likelihood that the actual bandwidth will deviate from the theoretical bandwidth on which the QoS functions are based.
What is needed is a system and method for implementing QoS functionality in a network device without necessarily determining actual bandwidth. What is further needed is such a system and method configured to provide the QoS functionality specifically for communication with an external network system and/or application.